package com.example.llademo.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.example.llademo.entity.ADSPosition;
import com.example.llademo.model.ADSPositionModel;
import com.example.llademo.util.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author zhangqi
 * @date 2024/4/2
 * @time 11:31
 * @description
 */
@Slf4j
public class AdsDataListener extends AnalysisEventListener<ADSPositionModel> {
    //起飞时间
    private Date takeOffTime;
    //降落时间
    private Date landingTime;
    //ads position list
    List<ADSPosition> list = new ArrayList<ADSPosition>();
    @Override
    public void invoke(ADSPositionModel adsPositionModel, AnalysisContext analysisContext) {
        ADSPosition adsPosition = ADSPosition.builder().build();
        if (adsPositionModel==null){
            return;
        }
        log.info("read csv row:{}",analysisContext.readRowHolder().getRowIndex());
        if (analysisContext.readRowHolder().getRowIndex()==1){
            takeOffTime=DateUtil.timeFormatter(adsPositionModel.getTakeOffTime(),"yyyy/M/d H:mm");
            landingTime=DateUtil.timeFormatter(adsPositionModel.getLandingTime(),"yyyy/M/d H:mm");
        }
        BeanUtils.copyProperties(adsPositionModel,adsPosition);
        adsPosition.setCaptureTime(DateUtil.sTimestampStr2Date(adsPositionModel.getCaptureTime()));
        adsPosition.setLat(new BigDecimal(adsPositionModel.getLat()));
        adsPosition.setLon(new BigDecimal(adsPositionModel.getLon()));
        adsPosition.setAlt(new BigDecimal(adsPositionModel.getAlt()));
        adsPosition.setLatRate(new BigDecimal(adsPositionModel.getLatRate()));
        adsPosition.setLonRate(new BigDecimal(adsPositionModel.getLonRate()));
        adsPosition.setAltRate(new BigDecimal(adsPositionModel.getAltRate()));
//        log.info("excel ads:{}",adsPosition);
//        log.info("excel ads captureTime:{}",adsPosition.getCaptureTime());
        list.add(adsPosition);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

    public List<ADSPosition> getList() {
        return list;
    }

    public Date getTakeOffTime(){
        return takeOffTime;
    }

    public Date getLandingTime(){
        return landingTime;
    }
}
